【Android 电量优化】电量优化 ( 唤醒锁定

您所在的位置:网站首页 安卓 保持唤醒状态 【Android 电量优化】电量优化 ( 唤醒锁定

【Android 电量优化】电量优化 ( 唤醒锁定

2024-07-18 04:24:51| 来源: 网络整理| 查看: 265

文章目录 一、使用 WeakLock 保持 CPU 唤醒 ( 费电操作 )1、保持 CPU 唤醒2、使用 WeakLock 保持 CPU 唤醒流程3、使用 WeakLock 保持 CPU 唤醒代码示例 二、屏幕唤醒三、源码及资源下载

参考 Google 官方文档 :

优化电池续航时间管理设备唤醒状态使设备保持唤醒状态设置重复闹铃时间 一、使用 WeakLock 保持 CPU 唤醒 ( 费电操作 ) 1、保持 CPU 唤醒

1 . Android 设备休眠次序 : Android 设备长时间不使用时 , ① 屏幕先变暗 , ② 然后屏幕关闭 , ③ 最后关闭 CPU ;

2 . CPU 唤醒状态 : 如果 CPU 被关闭了 , 那么 Service 服务 , 肯定无法运行了 , 这里需要让 CPU 保持唤醒状态 ;

3 . Service 服务后台运行 : 后台 Service 服务运行时 , 需要 CPU 唤醒 , 维持后台服务运行 ;

2、使用 WeakLock 保持 CPU 唤醒流程

使用 WeakLock 保持 CPU 唤醒流程 :

① 获取 PowerManager 服务 : 跨进程获取 PowerManager 服务 ;

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);

② 判断是否支持 CPU 唤醒 : 调用 PowerManager 对象的 isWakeLockLevelSupported 方法 , 获取该设备是否支持 CPU 唤醒操作 ;

powerManager.isWakeLockLevelSupported(PowerManager.PARTIAL_WAKE_LOCK)

③ 创建 PowerManager.WakeLock : 调用 PowerManager 对象 的 newWakeLock 方法 , 创建唤醒锁 ;

mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WAKE_LOCK");

④ 开启唤醒 CPU 操作 : 调用 PowerManager.WakeLock 对象的 acquire 开始唤醒 CPU 操作 ;

mWakeLock.acquire();

⑤ 结束唤醒 CPU 操作 : 不需要 CPU 唤醒时 , 及时释放唤醒锁 ;

mWakeLock.release(); 3、使用 WeakLock 保持 CPU 唤醒代码示例

1 . 在 AndroidManifest.xml 中设置权限 : 删除了大部分配置 , 只保留必要配置 ;

2 . 服务 Service 保持 CPU 唤醒代码示例 :

package kim.hsl.bp; import android.annotation.SuppressLint; import android.app.Service; import android.content.Intent; import android.os.Build; import android.os.IBinder; import android.os.PowerManager; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; public class WeakLockService extends Service { public static final String TAG = "WeakLockService"; /** * 唤醒锁定 服务 */ private PowerManager.WakeLock mWakeLock; @Nullable @Override public IBinder onBind(Intent intent) { return null; } @SuppressLint("InvalidWakeLockTag") @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) @Override public void onCreate() { super.onCreate(); // 跨进程获取 PowerManager 服务 PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); // 判断是否支持 CPU 唤醒 boolean isWakeLockLevelSupported = powerManager. isWakeLockLevelSupported(PowerManager.PARTIAL_WAKE_LOCK); // 支持 CPU 唤醒 , 才保持唤醒 if(isWakeLockLevelSupported){ // 创建只唤醒 CPU 的唤醒锁 mWakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "WAKE_LOCK"); // 开始唤醒 CPU mWakeLock.acquire(); } } @Override public void onDestroy() { super.onDestroy(); // 释放 CPU 唤醒锁 if(mWakeLock != null){ mWakeLock.release(); } } } 二、屏幕唤醒

屏幕唤醒操作 :

① 代码中设置 : 在 Activity 中为 Window 添加 WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 标识 ;

package kim.hsl.bp; import android.os.Bundle; import android.view.WindowManager; import androidx.appcompat.app.AppCompatActivity; public class MainActivity extends AppCompatActivity { public static final String TAG = "MainActivity"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } }

② 配置文件设置 : 在布局的根标签中设置 android:keepScreenOn=“true” 属性 ;

上述配置不需要特殊权限 , 不需要维护资源的申请释放 ;

三、源码及资源下载

源码及资源下载地址 :

① GitHub 工程地址 : Battery_Performance

② 使用 WeakLock 保持 CPU 唤醒 Service 代码地址 : WeakLockService.java

③ AndroidManifest.xml 配置文件地址 : AndroidManifest.xml

④ 屏幕唤醒 MainActivity.java 地址 : MainActivity.java

⑤ 屏幕唤醒布局文件 activity_main.xml 地址 : activity_main.xml



【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


    图片新闻

    实验室药品柜的特性有哪些
    实验室药品柜是实验室家具的重要组成部分之一,主要
    小学科学实验中有哪些教学
    计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
    实验室各种仪器原理动图讲
    1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
    高中化学常见仪器及实验装
    1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
    微生物操作主要设备和器具
    今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
    浅谈通风柜使用基本常识
     众所周知,通风柜功能中最主要的就是排气功能。在

    专题文章

      CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭